#include "common.h"

uint32_t dram_read(uint32_t, size_t);
void dram_write(uint32_t, size_t, uint32_t);

/* Memory accessing interfaces */
// 这是一个内存读取接口函数。它接受两个参数，一个是要读取的内存地址 addr，另一个是读取的数据长度 len。
// 在函数内部，它调用了 dram_read 函数来实际执行内存读取操作，并返回读取到的数据。
// 在 DEBUG 模式下，它还使用 assert 函数来确保数据长度为 1、2 或 4 字节
uint32_t mem_read(uint32_t addr, size_t len)
{
#ifdef DEBUG
	assert(len == 1 || len == 2 || len == 4);
#endif
	return dram_read(addr, len) & (~0u >> ((4 - len) << 3));
}

// 这是一个内存写入接口函数。它接受三个参数，一个是要写入的内存地址 addr，第二个是写入的数据长度 len，第三个是要写入的数据 data。
// 在函数内部，它调用了 dram_write 函数来实际执行内存写入操作。
// 在 DEBUG 模式下，它也使用 assert 函数来确保数据长度为 1、2 或 4 字节
void mem_write(uint32_t addr, size_t len, uint32_t data)
{
#ifdef DEBUG
	assert(len == 1 || len == 2 || len == 4);
#endif
	dram_write(addr, len, data);
}
